home *** CD-ROM | disk | FTP | other *** search
- #ifndef EXIF_H
- #define EXIF_H
-
- /*
- ** $VER: exif.h 1.0 (3.1.2001)
- **
- ** Public structures and defintions for exif.library.
- **
- ** © Paul Huxham
- */
-
- #ifndef EXEC_TYPES_H
- #include "exec/types.h"
- #endif
-
- #ifndef EXEC_LISTS_H
- #include "exec/lists.h"
- #endif
-
- #ifndef DOS_DOS_H
- #include <dos/dos.h>
- #endif
-
- #ifndef UTILITY_TAGITEM_H
- #include <utility/tagitem.h>
- #endif
-
- /*========================================================================*/
-
- struct Exif
- {
- struct MinList ExifTagList; // Contains entries of type ExifTagDir
-
- ULONG ExifLength; // Total size in bytes of exif header
- ULONG ThumbnailSize; // Size in bytes of thumbnail data
- UBYTE *ThumbnailData; // If not NULL points to the thumbnail data
-
- /* Private fields follow */
- };
-
- struct ExifTagDir
- {
- struct MinNode etd_MinNode;
-
- struct MinList etd_Dir; // Contains entries of type ExifTag
-
- ULONG etd_DirID; // Defined below
-
- char *etd_ID; // Points to a localized description of the directory name
- };
-
- struct ExifTag
- {
- struct MinNode et_MinNode;
-
- ULONG et_Tag; // Exif Tag
-
- char *et_TagDescription; // Points to a localized text description of the tag
-
- void *et_StringEquiv; // Points to a string version of the tag data
-
- UWORD et_Format; // Data format (defined below)
- UWORD et_reserved1;
- ULONG et_Count; // Byte count of original tag data
- UBYTE *et_OriginalData; // Original tag data
-
- /* Private fields */
- char data[1];
- };
-
- /* Data formats for et_OriginalData */
- #define FMT_BYTE 1
- #define FMT_STRING 2
- #define FMT_USHORT 3
- #define FMT_ULONG 4
- #define FMT_URATIONAL 5
- #define FMT_SBYTE 6
- #define FMT_UNDEFINED 7
- #define FMT_SSHORT 8
- #define FMT_SLONG 9
- #define FMT_SRATIONAL 10
- #define FMT_SINGLE 11
- #define FMT_DOUBLE 12
- #define FMT_CUSTOM 13
-
- /*========================================================================*/
- /* Exif tagbase */
- #define EXF_TB ( TAG_USER + 0x80000 )
-
- /* Exif tags requiring V1.0 */
-
- /* None defined */
-
- /*========================================================================*/
- /* Regular Exif 2.1 tags */
- #define EXIF_UNKNOWN 0x0000
-
- #define EXIF_NEW_SUBFILE_TYPE 0x00fe
- #define EXIF_SUBFILE_TYPE 0x00ff
- #define EXIF_IMAGE_WIDTH 0x0100
- #define EXIF_IMAGE_LENGTH 0x0101
- #define EXIF_BITS_PER_SAMPLE 0x0102
- #define EXIF_COMPRESSION 0x0103
- #define EXIF_PHOTOMETRIC_INTERPRET 0x0106
- #define EXIF_FILL_ORDER 0x010a
- #define EXIF_DOCUMENT_NAME 0x010d
- #define EXIF_DESCRIPTION 0x010e
- #define EXIF_MAKE 0x010f
- #define EXIF_MODEL 0x0110
- #define EXIF_STRIP_OFFSETS 0x0111
- #define EXIF_ORIENTATION 0x0112
- #define EXIF_SAMPLES_PER_PIXEL 0x0115
- #define EXIF_ROWS_PER_STRIP 0x0116
- #define EXIF_STRIP_BYTE_COUNTS 0x0117
- #define EXIF_X_RESOLUTION 0x011a
- #define EXIF_Y_RESOLUTION 0x011b
- #define EXIF_PLANAR_CONFIGURATION 0x011c
- #define EXIF_RESOLUTION_UNIT 0x0128
- #define EXIF_TRANSFER_FUNCTION 0x012d
- #define EXIF_SOFTWARE 0x0131
- #define EXIF_DATE_TIME 0x0132
- #define EXIF_ARTIST 0x013b
- #define EXIF_PREDICTOR 0x013d
- #define EXIF_WHITE_POINT 0x013e
- #define EXIF_PRIMARY_CHROMATICITIES 0x013f
- #define EXIF_TILE_WIDTH 0x0142
- #define EXIF_TILE_LENGTH 0x0143
- #define EXIF_TILE_OFFSETS 0x0144
- #define EXIF_TILE_BYTE_COUNTS 0x0145
- #define EXIF_SUB_IFDS 0x014a
- #define EXIF_TRANSFER_RANGE 0x0156
- #define EXIF_JPEG_TABLES 0x015b
- #define EXIF_JPEG_PROC 0x0200
- #define EXIF_JPEG_IF_OFFSET 0x0201
- #define EXIF_JPEG_IF_LENGTH 0x0202
- #define EXIF_YCBCR_COEFFICIENTS 0x0211
- #define EXIF_YCBCR_SUBSAMPLING 0x0212
- #define EXIF_YCBCR_POSITIONING 0x0213
- #define EXIF_REFERENCE_BLACK_WHITE 0x0214
- #define EXIF_CFA_REPEAT_PATTERN_DIM 0x828d
- #define EXIF_BATTERY_LEVEL 0x828f
- #define EXIF_COPYRIGHT 0x8298
- #define EXIF_EXPOSURE_TIME 0x829a
- #define EXIF_F_NUMBER 0x829d
- #define EXIF_IPTC_NAA 0x83bb
- #define EXIF_EXIF_OFFSET 0x8769
- #define EXIF_INTERCOLOR_PROFILE 0x8773
- #define EXIF_EXPOSURE_PROGRAM 0x8822
- #define EXIF_SPECTRAL_SENSITIVITY 0x8824
- #define EXIF_GPS_INFO 0x8825
- #define EXIF_ISO_SPEED_RATINGS 0x8827
- #define EXIF_OECF 0x8828
- #define EXIF_INTERLACE 0x8829
- #define EXIF_TIME_ZONE_OFFSET 0x882a
- #define EXIF_SELF_TIMER_MODE 0x882b
- #define EXIF_EXIF_VERSION 0x9000
- #define EXIF_DATE_TIME_ORIGINAL 0x9003
- #define EXIF_DATE_TIME_DIGITIZED 0x9004
- #define EXIF_COMPONENT_CONFIGURATION 0x9101
- #define EXIF_COMPRESSED_BPP 0x9102
- #define EXIF_SHUTTER_SPEED_VALUE 0x9201
- #define EXIF_APERTURE_VALUE 0x9202
- #define EXIF_BRIGHTNESS_VALUE 0x9203
- #define EXIF_EXPOSURE_BIAS_VALUE 0x9204
- #define EXIF_MAX_APERTURE_VALUE 0x9205
- #define EXIF_SUBJECT_DISTANCE 0x9206
- #define EXIF_METERING_MODE 0x9207
- #define EXIF_LIGHT_SOURCE 0x9208
- #define EXIF_FLASH 0x9209
- #define EXIF_FOCAL_LENGTH 0x920a
- #define EXIF_SPATIAL_FREQ_RESPONSE 0x920c
- #define EXIF_NOISE 0x920d
- #define EXIF_IMAGE_NUMBER 0x9211
- #define EXIF_SECURITY_CLASSIFICATION 0x9212
- #define EXIF_IMAGE_HISTORY 0x9213
- #define EXIF_SUBJECT_LOCATION 0x9214
- #define EXIF_EXPOSURE_INDEX 0x9215
- #define EXIF_TIFF_EP_STANDARD_ID 0x9216
- #define EXIF_MAKER_NOTE 0x927c
- #define EXIF_USER_COMMENT 0x9286
- #define EXIF_SUBSEC_TIME 0x9290
- #define EXIF_SUBSEC_TIME_ORIGINAL 0x9291
- #define EXIF_SUBSEC_TIME_DIGITIZED 0x9292
- #define EXIF_FLASHPIX_VERSION 0xa000
- #define EXIF_COLOR_SPACE 0xa001
- #define EXIF_EXIF_IMAGE_WIDTH 0xa002
- #define EXIF_EXIF_IMAGE_HEIGHT 0xa003
- #define EXIF_RELATED_SOUND_FILE 0xa004
- #define EXIF_INTEROP_OFFSET 0xa005
- #define EXIF_FLASH_ENERGY 0xa20b
- #define EXIF_FOCAL_PLANE_X_RES 0xa20e
- #define EXIF_FOCAL_PLANE_Y_RES 0xa20f
- #define EXIF_FOCAL_PLANE_RES_UNIT 0xa210
- #define EXIF_SENSING_METHOD 0xa217
- #define EXIF_FILE_SOURCE 0xa300
- #define EXIF_SCENE_TYPE 0xa301
- #define EXIF_CFA_PATTERN 0xa302
-
- /* Interoperability tags */
- #define EXIF_INTEROP_INDEX 0x0001
- #define EXIF_INTEROP_VERSION 0x0002
- #define EXIF_RELATED_IMAGE_FORMAT 0x1000
- #define EXIF_RELATED_IMAGE_WIDTH 0x1001
- #define EXIF_RELATED_IMAGE_HEIGHT 0x1002
-
- /* Olympus exif tags (stored in TAG_MAKERNOTE) */
- #define EXIF_OLYMP_SPECIAL_MODE 0x0200
- #define EXIF_OLYMP_JPEG_QUALITY 0x0201
- #define EXIF_OLYMP_MACRO 0x0202
- #define EXIF_OLYMP_DIGI_ZOOM 0x0204
- #define EXIF_OLYMP_SOFTWARE_RELEASE 0x0207
- #define EXIF_OLYMP_PICT_INFO 0x0208
- #define EXIF_OLYMP_CAMERA_ID 0x0209
- #define EXIF_OLYMP_DATA_DUMP 0x0f00
-
- /* Casio exif tags (stored in TAG_MAKERNOTE) */
- #define EXIF_CASIO_RECORDING_MODE 0x0001
- #define EXIF_CASIO_QUALITY 0x0002
- #define EXIF_CASIO_FOCUSING_MODE 0x0003
- #define EXIF_CASIO_FLASH_MODE 0x0004
- #define EXIF_CASIO_FLASH_INTENSITY 0x0005
- #define EXIF_CASIO_OBJECT_DISTANCE 0x0006
- #define EXIF_CASIO_WHITE_BALANCE 0x0007
- #define EXIF_CASIO_DIGITAL_ZOOM 0x000a
- #define EXIF_CASIO_SHARPNESS 0x000b
- #define EXIF_CASIO_CONTRAST 0x000c
- #define EXIF_CASIO_SATURATION 0x000d
- #define EXIF_CASIO_CCD_SENSITIVITY 0x0014
-
- /* Additional extracted infromation from the jpeg stream - not Exif */
- #define EXIF_JPEG_DATA_LENGTH 0x0100
- #define EXIF_JPEG_THUMBNAIL_BYTE_SIZE 0x0101
- #define EXIF_JPEG_CCD_WIDTH 0x0102
- #define EXIF_JPEG_FILM_35MM_EQUIV 0x0103
- #define EXIF_JPEG_DATA_PRECISION 0x0104
- #define EXIF_JPEG_NUM_COMPONENTS 0x0105
- #define EXIF_JPEG_WIDTH 0x0106
- #define EXIF_JPEG_HEIGHT 0x0107
- #define EXIF_JPEG_COLOR 0x0108
- #define EXIF_JPEG_PROCESS 0x0109
- #define EXIF_JPEG_COMMENT 0x010a
-
- /* Nikon exif tags (stored in TAG_MAKERNOTE) - NOT IMPLEMENTED */
- #define EXIF_NIKON_QUALITY 0x0003
- #define EXIF_NIKON_COLOR_MODE 0x0004
- #define EXIF_NIKON_IMAGE_ADJUSTMENT 0x0005
- #define EXIF_NIKON_CCD_SENSITIVITY 0x0006
- #define EXIF_NIKON_WHITE_BALANCE 0x0007
- #define EXIF_NIKON_FOCUS 0x0008
- #define EXIF_NIKON_DIGITAL_ZOOM 0x000a
- #define EXIF_NIKON_CONVERTER 0x000b
-